package game;

public class Game {
	
	int[] nums = new int[3];//存放游戏中需要的3个特殊数
	//存放3个特殊数两两相乘以及3个数相乘（即共同的倍数）的结果集（由于可能多个老师带班游戏，每局给的数不同，不能设置静态）
	int[] products = null;
	//存放3个共同共同倍数的  一一对应的实际结果（因为是固定的不需要放到构造函数中动态初始化）
	static String[] compoundsResult = { "FizzBuzz",
								 		"FizzWhizz",
								 		"BuzzWhizz",
								 		"FizzBuzzWhizz"};
	/**
	 * 成员属性nums、products需要动态初始化
	 * @param nums
	 */
	public Game( int[] nums ) {
		this.nums = nums;
		this.products =new int[]{ this.nums[0] * this.nums[1], 
					this.nums[0] * this.nums[2], 
					this.nums[1] * this.nums[2],
					this.nums[0] * this.nums[1] * this.nums[2]};
	}
	
	/**
	 * 判断是否符合游戏规则6
	 * @param i
	 * @return String
	 */
	public String rule_6(int i) {
		String i_str = Integer.toString(i);
		String target = Integer.toString(nums[0]);
		if (i_str.contains(target) == true){
			return "Fizz";
		}
		return "";//无论如何都不可以返回null！！！（基础错误：空指针异常）
	}
	
	/**
	 * 判断是否符合游戏规则5
	 * @param i
	 * @return String
	 */
	public String rule_5(int i) {
		
		for (int j = this.products.length - 1; j >= 0 ; j--) {//先从是三个特殊数的被数开始判断
			if (i % this.products[j] == 0) {
				return Game.compoundsResult[j];
			}
		}
		return "";
	}
	
	/**
	 * 判断是否符合游戏规则2\3\4
	 * @param i
	 * @return String
	 */
	public String rule_234(int i) {
			
		if (i%nums[0] == 0) {
			return "Fizz";
		}else if (i%nums[1] == 0) {
			return "Buzz";
		}else if (i%nums[2] == 0) {
			return "Whizz";
		}
		
		return Integer.toString(i);
	}	
}
